perm filename G6[KID,KMC] blob sn#122905 filedate 1974-11-15 generic text, type T, neo UTF8
TITLE G6
;THIS MEMBER PROGRAM OF THE NEW KIDS SUITE SHOWS WORD CONSTRUCTION
EXTERNAL MAINLP,DPINIT,PDPGET,CLEAR,SHOW,AIVECT,CHINIT
EXTERNAL LV2,KILL,TYOPTR,TIKCNT,DDRREL,DMDDIR,SPEAK
INTERNAL DOTHNG,GAMNAM,GAMENO,DIRECT

X1←6
X2 ← X1+1
X3 ← X2+1
X4 ← X3+1
X5 ← X4+1
X6 ← X5+1
P←17
A←13	;SAME AS X6
B←14
C←15

GAMNAM:	SIXBIT	/GAME6/
GAMENO:	000600000000		;GAME NUMBER FOR HISTORY FILE
DIRECT:	BLOCK	=281		;ALLOW FOR 140 ENTRIES.

DOTHNG:	;ELIMINATE MOST OF THE NON-ALPHANUMERICS.
	CAILE	X1,132
	JRST	MAINLP		;REJECT CHARCTERS ABOVE ALPHABET.
	CAIGE	X1,060
	JRST	MAINLP		;REJECT CHARACTERS BELOW DIGITS.
	SUBI	X1,040		;RECODE TO SIXBIT

	PUSHJ	P,CLEAR		;CLEAR BUFFER.
	MOVE	A,[SIXBIT /FRAME6/]
	PUSHJ	P,PDPGET
	JUMPN	A,[MOVEI A,0
		   MOVEI B,=2561
		   PUSHJ P,DPINIT
		   OUTSTR [ASCIZ /CANNOT FIND FRAME6.DPY/]
		   HALT]
	MOVEI	A,1		;INDICATE P.O.G. 1
	PUSHJ	P,SHOW
	
	MOVE	A,[SIXBIT /TRUM6/]
	PUSHJ	P,DMDDIR
	JUMPN	A,.+2		;DON'T SPEAK AFTER ERROR FLAG
	PUSHJ	P,SPEAK

	MOVE	A,[SIXBIT /HERE6/]
	PUSHJ	P,DMDDIR
	JUMPN	A,.+2		;DON'T SPEAK AFTER ERROR FLAG
	PUSHJ	P,SPEAK

	MOVE	A,TABLE1(X1)
	PUSHJ	P,DMDDIR
	JUMPN	A,.+2		;DON'T SPEAK AFTER ERROR FLAG
	PUSHJ	P,SPEAK

	MOVEI	X2,0		;CHARACTERS SHOWABLE SO FAR
	MOVE	X3,TABLE2(X1)	;CHARACTERS TO BE SHOWN
LETRLP:	;LETTER LOOP - ONCE AROUND FOR EACH OF THE LETTERS IN THE WORD
	JUMPE	X3,LTRLPX	;ESCAPE WHEN NO LETTERS LEFT
	LSHC	X2,6		;SHIFT NEXT CHARCTER TO SHOWABLE LIST
	MOVE	X4,X2
	ANDI	X4,77		;GET NEW CHARACTER
	MOVE	X5,X4		;COPY IT
	LSH	X5,=30
	OR	X5,[SIXBIT / FRAM6/]

	PUSHJ	P,CLEAR
	MOVE	A,X5		;*FRAM6
	PUSHJ	P,PDPGET	;LOOKUP DIRECTORY
	JUMPN	A,[MOVEI A,0
		MOVEI	B,=2561
		PUSHJ	P,DPINIT
		OUTSTR	[ASCIZ /*FRAM6 NOT FINDABLE/]
		HALT]
	MOVEI	A,1		
	PUSHJ	P,SHOW		;*FRAM6 ON POG 1

	PUSHJ	P,CLEAR		;CLEAR BUFFER.
	MOVE	A,[SIXBIT /FRAME6/]
	PUSHJ	P,PDPGET
	JUMPN	A,[MOVEI A,0
		   MOVEI B,=2561
		   PUSHJ P,DPINIT
		   OUTSTR [ASCIZ /CANNOT FIND FRAME6.DPY/]
		   HALT]
	MOVEI	A,1		;INDICATE P.O.G. 1
	PUSHJ	P,SHOW
	
	PUSHJ	P,CLEAR
	MOVE	A,X5		;*FRAM6
	PUSHJ	P,PDPGET	;LOOKUP DIRECTORY
	JUMPN	A,[MOVEI A,0
		MOVEI	B,=2561
		PUSHJ	P,DPINIT
		OUTSTR	[ASCIZ /*FRAM6 NOT FINDABLE/]
		HALT]
	MOVEI	A,1		
	PUSHJ	P,SHOW		;*FRAM6 ON POG 1

	PUSHJ	P,CLEAR		;CLEAR BUFFER.
	MOVE	A,[SIXBIT /FRAME6/]
	PUSHJ	P,PDPGET
	JUMPN	A,[MOVEI A,0
		   MOVEI B,=2561
		   PUSHJ P,DPINIT
		   OUTSTR [ASCIZ /CANNOT FIND FRAME6.DPY/]
		   HALT]
	MOVEI	A,1		;INDICATE P.O.G. 1
	PUSHJ	P,SHOW
	
	PUSHJ	P,CLEAR
	MOVE	A,X5		;*FRAM6
	PUSHJ	P,PDPGET	;LOOKUP DIRECTORY
	JUMPN	A,[MOVEI A,0
		MOVEI	B,=2561
		PUSHJ	P,DPINIT
		OUTSTR	[ASCIZ /*FRAM6 NOT FINDABLE/]
		HALT]
	MOVEI	A,1		
	PUSHJ	P,SHOW		;*FRAM6 ON POG 1

	MOVE	A,X4		;GET THE LETTER AGAIN
	LSH	A,=30		;PUT IN TOP OF WORD
	OR	A,[SIXBIT	/ 1/]
	PUSHJ	P,DMDDIR	;LOOKUP *1.DMD
	CAIN	A,0
	PUSHJ	P,SPEAK		;SAY THE LETTER.

	MOVEI	X5,0		;INITIALLY NO FRAMES OF MOVIE SHOWN
MOVIEL:	ADDI	X5,1		;PREPARE TO SHOW NEXT FRAME
	CAMLE	X5,TABLE3(X4)	;TEST FOR END OF MOVIE
	JRST	MOVIEX		;ESCAPE LOOP
	PUSHJ	P,CLEAR		;CLEAR BUFFER
	MOVE	A,X5		;COPY FRAME NUMBER
	ADDI	A,020		;MAKE IT A SIXBIT DIGIT
	LSH	A,6
	OR	A,X4		;PUT IN THE MOVIE NAME(A LETTER)
	LSH	A,6		;REG A NOW HAS SIXBIT FORM /   DL /
	OR	A,[SIXBIT /MOV  6/]
	PUSHJ	P,PDPGET	;LOOK FOR /MOVDL6/ IN DIRECTORY
	JUMPN	A,[MOVEI A,0
		MOVEI	B,=2561
		PUSHJ	P,DPINIT
		OUTSTR	[ASCIZ /SOME FILE MOV**6 NOT LOCATABLE/]
		HALT]
	MOVE	A,TIKCNT	;TIME SINCE LAST FRAME DISPAYED
	ADDI	A,7
	JUMPL	A,.+4		;CARRY ON IF A SIXTH OF A SECOND PASSED
	MOVEI	A,0
	CALL	A,[SIXBIT /SLEEP/]
	JRST	.-5
	MOVEI	A,2		;INDICATE P.O.G. 2
	PUSHJ	P,SHOW		;MOV**6 SHOWS ON POG 2
	SETZM	TIKCNT
	JRST	MOVIEL		;DITTO FOR NEXT FRAME IN MOVIE


MOVIEX:	MOVEI	A,2
	PUSHJ	P,KILL		;KILL POG 2

	PUSHJ	P,CLEAR		;CLEAR BUFFER
	MOVEI	A,=-130
	MOVEI	B,0
	PUSHJ	P,AIVECT	;AIVECT(-130,0)
	MOVEI	A,0
	MOVEI	B,0
	MOVEI	C,46
	MOVEI	0,7
	DPB	0,[POINT 3,C,27]
	PUSHJ	P,LV2		;GVECT(0,0,46,7,0)
	MOVEI	A,7
	MOVEI	B,=1000
	MOVEI	C,=-500		
	PUSHJ	P,CHINIT	;CHINIT(7,1000,-500)
	MOVE	X5,X2		;COPY LIST OF CHARACTERS TO BE SHOWN
WDLOOP:	;LOOP TO SHOW PARTIAL WORD
	JUMPE	X5,WDLPX	;ESCAPE LOOP WHEN ALL CHARACTERS OUTPUT
	MOVEI	X4,0
	LSHC	X4,6		;GET TOP CHARACTER INTO X4
	JUMPE	X4,WDLOOP	;IGNORE THE LEADING SPACES.
	ADDI	X4,040		;CONVERT LETTER FROM SIXBIT TO ASCII
	IDPB	X4,TYOPTR	;PUT CHARACTER IN BUFFER
	JRST	WDLOOP

WDLPX:	;ALL LETTERS ARE IN THE BUFFER.
	MOVEI	A,3
	PUSHJ	P,SHOW		;SHOW PARTIAL WORD ON POG3

	JRST	LETRLP		;CONSIDER NEXT LETTER, IF ANY

LTRLPX:	;ALL MOVIES HAVE BEEN SHOWN

	PUSHJ	P,CLEAR		;CLEAR BUFFER.
	MOVE	A,[SIXBIT /FRAME6/]
	PUSHJ	P,PDPGET
	JUMPN	A,[MOVEI A,0
		   MOVEI B,=2561
		   PUSHJ P,DPINIT
		   OUTSTR [ASCIZ /CANNOT FIND FRAME6.DPY/]
		   HALT]
	MOVEI	A,1		;INDICATE P.O.G. 1
	PUSHJ	P,SHOW
	
	MOVE	A,TABLE1(X1)
	PUSHJ	P,DMDDIR
	JUMPN	A,.+2		;DON'T SPEAK AFTER ERROR FLAG
	PUSHJ	P,SPEAK

	JRST	MAINLP

LIST1:	SIXBIT	/N01/
	SIXBIT	/N11/
	SIXBIT	/N21/
	SIXBIT	/N31/
	SIXBIT	/N41/
	SIXBIT	/N51/
	SIXBIT	/N61/
	SIXBIT	/N71/
	SIXBIT	/N81/
	SIXBIT	/N91/
	0
	0
	0
	0
	0
	0
	0
	SIXBIT	/ANT6/
	SIXBIT	/BALL6/
	SIXBIT	/CAT6/
	SIXBIT	/DOG6/
	SIXBIT	/EGG6/
	SIXBIT	/FISH6/
	SIXBIT	/GO6/
	SIXBIT	/HAT6/
	SIXBIT	/ICE6/
	SIXBIT	/JUMP6/
	SIXBIT	/KISS6/
	SIXBIT	/LOVE6/
	SIXBIT	/ME6/
	SIXBIT	/NUT6/
	SIXBIT	/OWL6/
	SIXBIT	/PIE6/
	SIXBIT	/QUAC6/
	SIXBIT	/RUN6/
	SIXBIT	/SING6/
	SIXBIT	/TV6/
	SIXBIT	/UP6/
	SIXBIT	/VERY6/
	SIXBIT	/WHAL6/
	SIXBIT	/XYZ6/
	SIXBIT	/YES6/
	SIXBIT	/ZAP6/

TABLE1←LIST1-20

LIST2:	SIXBIT	/ZERO/
	SIXBIT	/ONE/
	SIXBIT	/TWO/
	SIXBIT	/THREE/
	SIXBIT	/FOUR/
	SIXBIT	/FIVE/
	SIXBIT	/SIX/
	SIXBIT	/SEVEN/
	SIXBIT	/EIGHT/
	SIXBIT	/NINE/
	0
	0
	0
	0
	0
	0
	0
	SIXBIT	/ANT/
	SIXBIT	/BALL/
	SIXBIT	/CAT/
	SIXBIT	/DOG/
	SIXBIT	/EGG/
	SIXBIT	/FISH/
	SIXBIT	/GO/
	SIXBIT	/HAT/
	SIXBIT	/ICE/
	SIXBIT	/JUMP/
	SIXBIT	/KISS/
	SIXBIT	/LOVE/
	SIXBIT	/ME/
	SIXBIT	/NUT/
	SIXBIT	/OWL/
	SIXBIT	/PIE/
	SIXBIT	/QUACK/
	SIXBIT	/RUN/
	SIXBIT	/SING/
	SIXBIT	/TV/
	SIXBIT	/UP/
	SIXBIT	/VERY/
	SIXBIT	/WHALE/
	SIXBIT	/XYZ/
	SIXBIT	/YES/
	SIXBIT	/ZAP/

TABLE2←LIST2-20

LTHS:	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	4
	9

TABLE3←LTHS-41

END